package com.esreport.service;

import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInterval;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface XReportService {

    /**
     * 统计浏览量（新闻）
     *
     * @param siteId
     * @return
     */
    long countBrowseNews(Integer siteId);

    /**
     * 总停留时常求和
     *
     * @param siteId
     * @return 毫秒
     */
    long sumStayTime(Integer siteId);


    /**
     * 总停留时常求和
     *
     * @param siteId
     * @return 毫秒
     */
    long countAvgStayTime(Integer siteId);

    /**
     * 总停留时常求和
     *
     * @param siteId
     * @return 毫秒
     */
    long countAvgStayTime(Date start, Date end, Integer siteId);

    /**
     * 分享次数统计
     *
     * @param siteId
     * @return
     */
    long countShare(Integer siteId);

    /**
     * 首次启动数
     *
     * @param siteId
     * @return
     */
    long countFirstStart(Integer siteId);

    /**
     * 首次启动数
     *
     * @param siteId
     * @return
     */
    long countFirstStart(Date start, Date end, Integer siteId);

    /**
     * 总启动数
     *
     * @param siteId
     * @return
     */
    long countStart(Date start, Date end, Integer siteId);

    /**
     * 总启动数
     *
     * @param siteId
     * @return
     */
    long countStart(Integer siteId);

    /**
     * 总用户数 含未注册
     *
     * @param siteId
     * @return
     */
    long countAllUser(Integer siteId);

    /**
     * 总用户数 含未注册
     *
     * @param siteId
     * @return
     */
    long countAllUser(Date start, Date end, Integer siteId);

    /**
     * 分享新闻排行（目前查询前10条）
     *
     * @param siteId
     * @return
     */
    List<Map> countShareRank(Integer siteId);

    /**
     * 分享新闻排行（目前查询前10条）
     *
     * @param siteId
     * @return
     */
    List<Map> countShareRank(Date start, Date end, Integer siteId);


    /**
     * 新闻浏览量粒度统计
     *
     * @param siteId
     * @return
     */
    List<Map> granularQuery(Date start, Date end, Integer siteId, DateHistogramInterval type);
}
